﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	///<summary>
	///Вид выставленного счета-фактуры
	///</summary>
	[DataContract]
	public enum ВидСчетаФактурыВыставленного
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
		[EnumMember(Value = "{\"Ссылка\":\"807d93b7-e69f-4d73-a4c5-d6726a611e54\", \"Представление\":\"НаРеализацию\"}")]
		НаРеализацию = 0,//На реализацию
		[EnumMember(Value = "{\"Ссылка\":\"b20387d5-c412-4608-8f9d-cc747e9897f9\", \"Представление\":\"НаАванс\"}")]
		НаАванс = 1,//На аванс
		[EnumMember(Value = "{\"Ссылка\":\"9302444e-8f10-4eb2-a397-907ddbd97b96\", \"Представление\":\"НаСуммовуюРазницу\"}")]
		НаСуммовуюРазницу = 2,//На суммовую разницу
		[EnumMember(Value = "{\"Ссылка\":\"19e1b2fc-ee91-484d-b465-6da0fbda0f80\", \"Представление\":\"НалоговыйАгент\"}")]
		НалоговыйАгент = 3,//Налоговый агент
		[EnumMember(Value = "{\"Ссылка\":\"c70af02f-4c0a-4186-9964-7c93e3f70a01\", \"Представление\":\"Корректировочный\"}")]
		Корректировочный = 4,
		[EnumMember(Value = "{\"Ссылка\":\"555dd15b-0f3b-4a2e-9824-b07eee5b55b9\", \"Представление\":\"НаАвансКомитента\"}")]
		НаАвансКомитента = 5,//На аванс комитента
	}
	public static partial class ВидСчетаФактурыВыставленного_Значения//:ПеречислениеСсылка
	{
		public static readonly Guid НаРеализацию = new Guid("72d6c5a4-616a-541e-4d73-e69f807d93b7");//На реализацию
		public static readonly Guid НаАванс = new Guid("74cc9d8f-987e-f997-4608-c412b20387d5");//На аванс
		public static readonly Guid НаСуммовуюРазницу = new Guid("7d9097a3-d9db-967b-4eb2-8f109302444e");//На суммовую разницу
		public static readonly Guid НалоговыйАгент = new Guid("a06d65b4-dafb-800f-484d-ee9119e1b2fc");//Налоговый агент
		public static readonly Guid Корректировочный = new Guid("937c6499-f7e3-010a-4186-4c0ac70af02f");
		public static readonly Guid НаАвансКомитента = new Guid("7eb02498-5bee-b955-4a2e-0f3b555dd15b");//На аванс комитента
		public static ВидСчетаФактурыВыставленного Получить(this ВидСчетаФактурыВыставленного Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static ВидСчетаФактурыВыставленного Получить(this ВидСчетаФактурыВыставленного Значение, Guid Ссылка)
		{
			if(Ссылка == НаРеализацию)
			{
				return ВидСчетаФактурыВыставленного.НаРеализацию;
			}
			else if(Ссылка == НаАванс)
			{
				return ВидСчетаФактурыВыставленного.НаАванс;
			}
			else if(Ссылка == НаСуммовуюРазницу)
			{
				return ВидСчетаФактурыВыставленного.НаСуммовуюРазницу;
			}
			else if(Ссылка == НалоговыйАгент)
			{
				return ВидСчетаФактурыВыставленного.НалоговыйАгент;
			}
			else if(Ссылка == Корректировочный)
			{
				return ВидСчетаФактурыВыставленного.Корректировочный;
			}
			else if(Ссылка == НаАвансКомитента)
			{
				return ВидСчетаФактурыВыставленного.НаАвансКомитента;
			}
			return ВидСчетаФактурыВыставленного.ПустаяСсылка;
		}
		public static byte[] Ключ(this ВидСчетаФактурыВыставленного Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this ВидСчетаФактурыВыставленного Значение)
		{
			switch (Значение)
			{
				case ВидСчетаФактурыВыставленного.НаРеализацию: return НаРеализацию;
				case ВидСчетаФактурыВыставленного.НаАванс: return НаАванс;
				case ВидСчетаФактурыВыставленного.НаСуммовуюРазницу: return НаСуммовуюРазницу;
				case ВидСчетаФактурыВыставленного.НалоговыйАгент: return НалоговыйАгент;
				case ВидСчетаФактурыВыставленного.Корректировочный: return Корректировочный;
				case ВидСчетаФактурыВыставленного.НаАвансКомитента: return НаАвансКомитента;
			}
			return Guid.Empty;
		}
	}
}